//1.加载第三方模块
const express=require('express');
//引入用户路由器
const mysql=require("mysql");
//引入body-parser中间件
const bodyParser=require("body-parser");
//mysql 驱动
const cors=require("cors");
//跨域
const session=require("express-session");
//
//session
//2.配置数据库连接池：提高数据效率
var pool=mysql.createPool({
  host:"127.0.0.1",  //数据库地址
  user:"root",       //数据库用户名
  password:"",       //数据库密码
  port:3306,         //数据库端口
  database:"idloves",//数据库名称
  connectionLimit:15 //连接数量
});

var server=express();
//3.配置跨域模块
server.use(cors({
  //允许跨域访问程序地址列表
  origin:["http://127.0.0.1:8080","http://localhost:8080"],
  credentials:true//请求验证结果
}))
//4.配置session模块
server.use(session({
  secret:"128位字符串",//安全字符串
  resave:true,//请求时要更新数据
  saveUninitialized:true//保存初始数据
}));
//使用body-parser中间件
server.use(bodyParser.urlencoded({
  extended:false//不使用第三方的ps模块，而是使用querystring模块
}));
//5.配置项目静态目录：图片
server.use(express.static("public/img/details"));
server.use(express.static("public/img/index"));
server.use(express.static("public/img/login"));
server.use(express.static("public/img/header"));
server.use(express.static("public/img/footer"));
server.use(express.static("public/img/sidebar"));
server.use(express.static("public/img/register"));
//测试
//http://127.0.0.1:3000/


//6.启动监听端口3000
server.listen(3000);

//功能一：完成用户登录操作
server.get("/login",(req,res)=>{
  //1.参数：获取网页传递两个数据 uname upwd
  //参数方式一；？uname=？&upwd=？ 查询字符串
  //参数方式二：/tom/123    参数
  var uname=req.query.uname;
  var upwd=req.query.upwd;
  //2.sql：查询SQL语句
  var sql="SELECT uid FROM id_user WHERE uname=? AND upwd=?";
  //3.json:{code:1,msg:"登录成功"}
  pool.query(sql,[uname,upwd],(err,result)=>{
    //执行SQL语句回调函数
    if(err)throw err;
    //判断
    if(result.length==0){
      res.send({code:-1,msg:"用户名或密码错误"});
    }else{
      //登录成功
      //1.将登陆成功保存session
      //result=[{id:1}]
      req.session.uid=result[0].uid;
      //2.将登陆成功消息发送脚手架
      res.send({code:1,msg:"登录成功",data:req.session});
    }
  })
});

//测试：
//http://127.0.0.1:3000/login?uname=jiajia@loves.com&upwd=123456

//功能二：完成用户注册操作
// server.post('/register', (req, res) => {
//   var data='';
//   req.on('data',function(chunk){
//     data+=chunk;
//   });
//   req.on('end',function(){
//     data = JSON.parse(data);
//     console.log(data);
//   })
//   // const user = req.body
//   // console.log(req.body);
//   const sql="INSERT INTO id_user VALUES ?"
//   pool.query(sql,data, (err, result) => {
//     if (err)throw err;
//     if(result.affectedRows>0){
//     res.send({code:1,msg:"注册成功"});
//     }
//   })
// })


//功能二：完成用户注册操作
server.post("/register",(req,res)=>{
   var user=req.body;
   //console.log(user);
   var sql=`INSERT INTO id_user SET ?`;
   //执行SQL语句
   pool.query(sql,[user],(err,result)=>{
     if(err) throw err;
     //判断是否插入成功
     if(result.affectedRows>0){
       res.send({code:1,msg:"注册成功"});
     }
   });
 })
//测试：
//http://127.0.0.1:3000/register/uname=liuxu@loves.com&170710


//功能三：完成index页面真爱验证操作
server.get("/loveReg",(req,res)=>{
  //获取到两个参数
  var userName=req.query.user_name;
  var userId=req.query.id_number;
  //创建SQL语句
  var sql="SELECT product_id FROM id_order WHERE user_name=? AND id_number=?";
  //执行SQL语句回调函数
  pool.query(sql,[userName,userId],(err,result)=>{
    //有错误，抛出错误
    if(err)throw err;
    //判断数据库中是否有订单
    if(result.length==0){
      res.send({code:-1,msg:"验证通过，可以购买"});
    }else{
      //已有购买记录，不能再次购买
      res.send({code:1,msg:"验证未通过，已有购买订单"});
    }
  });
})

//功能四：加载首页热销商品和人气最高商品
server.get("/product",(req,res)=>{
  var sql="SELECT pid,title,details,sold_count,price,href,pic FROM id_index_product";
  pool.query(sql,[],(err,result)=>{
    if(err)throw err;
    res.send({code:1,msg:"查询成功",data:result});
  })
})
//功能五：商品详情页内容加载
server.get("/details",(req,res)=>{
  var rid=req.query.rid
  var sql="SELECT rid,title,price,sold_count,weight,color,neatness,cut,spec,product_id,ccie,texture,details FROM id_ring WHERE rid=?";
  pool.query(sql,[rid],(err,result)=>{
    if(err)throw err;
    res.send({code:1,msg:"查询成功",data:result});
  })
})
